安装hadoop是一件比较麻烦的事情,特别是在需要安装的组件特别多、安装的主机特别多的情况下(例如几百台)。Cloudera公司提供了一个名为Cloudera Manager的工具,这个工具主要的功能有3个:集群自动化安装部署、集群监控、集群运维。
安装前的准备工作
准备3台机器
提前准备3台机器,操作系统为ubuntu 18.04。为了方便使用,在hosts文件中配置3台机器的ip:
sudo vim /etc/hosts
添加以下内容:
1 | 10.0.110.101 h1 |
设置root用户密码
1 | sudo passwd root |
允许使用root用户登录ssh:
1 | sudo vim /etc/ssh/sshd_config |
添加:PermitRootLogin yes
切换阿里源
1 | sudo vim /etc/apt/sources.list |
替换为:
1 | deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse |
安装JDK
JDK需要在3台机器上安装:
1 | sudo apt-get install openjdk-8-jdk |
安装mysql
mysql只需要在h1机器上安装即可
1 | sudo apt-get install -yq mysql-server mysql-client libmysqlclient-dev libmysql-java |
查看原始用户的信息:
1 | sudo cat /etc/mysql/debian.cnf |
使用debian-sys-maint
用户以及密码登录mysql。
修改root用户的密码:
1 | update mysql.user set authentication_string=password('123456') where user='root'; |
允许root用户远程连接:
1 | sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf |
将bind-address=127.0.0.1
改成bind-address=0.0.0.0
设置root用户的连接权限:
1 | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; |
安装ntp服务
CDH要求集群中的每台机器上配置网络时间协议(NTP)进行时间同步:
- 安装ntp
1 | sudo apt-get install ntp |
- 修改配置文件
sudo vim /etc/ntp.conf
添加以下的配置
1 | server 0.pool.ntp.org |
- 重启ntp服务
sudo service ntp restart
- 设置ntp服务开机自启
sudo systemctl enable ntp
设置时区
- 执行
tzselect
,选择北京时间 - 复制配置文件到
/etc
目录下:sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
禁用交换分区
1 | sudo sysctl vm.swappiness=1 |
安装Cloudera Manager
Cloudera Manager提供3种安装方式:
- 第一种使用
cloudera-manager-installer.bin
安装程序来在线安装。 - 第二种使用
rpm
、yum
、apt-get
命令的方式来在线安装。 - 第三种使用
tarball
的方式离线安装
第一种方式是最方便的,就像安装一个客户端软件一下就可以。但是和第二种方式一样都属于在线安装,安装过程需要访问国外网站,整个过程非常慢,容易安装失败。
采用tarball
的方式需要将安装包手动传到集群的每一台机器,安装起来比较繁琐。我们最终采用在线与离线两种安装方式的混搭:搭建本地源的方式来在线安装从而避开国外网站访问的限制。
本地源的搭建
- 下载cm6的安装包
从https://archive.cloudera.com/cm6/6.3.1/repo-as-tarball/中下载cm6.3.1-ubuntu1804.tar.gz
- 解压之后上传到局域网的某个nginx静态服务器中,路径为
/cm6/6.3.1/ubuntu1804/apt/
。如下图所示,如果可以正常访问,那么本地源就搞定了。
- 每个节点都需要配置Cloudera Manager的离线源:
sudo vim /etc/apt/sources.list.d/cloudera-manager.list
添加本地源:
deb [arch=amd64] http://10.0.102.99/cm6/6.3.1/ubuntu1804/apt/ bionic-cm6 contrib
下载archive.key
文件
wget http://10.0.102.99/cm6/6.3.1/ubuntu1804/apt/archive.key
添加archive.key
文件,并更新源
1 | sudo apt-key add archive.key |
安装Cloudera Manager包
在master节点中执行:
sudo apt-get install cloudera-manager-daemons cloudera-manager-server cloudera-manager-agent
在slave节点中执行:
sudo apt-get install cloudera-manager-daemons cloudera-manager-agent
设置数据库
创建CDH依赖的数据库以及用户
1 | -- 创建数据库 |
设置Cloudera Manager数据库
1 | cd /opt/cloudera/cm/schema/ |
下载CDH的parcels包
https://archive.cloudera.com/cdh6/6.3.2/parcels/
将CDH的parcels包下载到master节点的指定位置,执行:
1 | cd /opt/cloudera/parcel-repo |
注意要将CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha1
文件重命名为CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha
。
启动服务
master节点执行:sudo service cloudera-scm-server start
slave节点执行:sudo service cloudera-scm-agent start
配置Cloudera Manager
访问http://h1:7180/
来配置Cloudera Manager
- 设置集群名称
- 向集群中添加机器
- 选择存储库
- 安装JDK
- 添加集群中机器的用户名密码
- 配置集群中所有机器
- 在集群中安装CDH
- 检查整个集群
选择I understand the riks, let me continue with cluster setup
。
- 选择安装的服务
- 耐心等待整个集群服务安装成功
- 服务全部启动成功
测试hadoop
1 | sudo -u hdfs hadoop jar /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 100 100 |
在yarn的监控页面我们看到任务正在运行。
成功运行说明我们的hadoop已经安装成功了。